package top.xcxdl.rural.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 *
 * </p>
 *
 * @author Ding
 * @since 2022-05-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class RuralCourse implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 课程、章节、课节主键id
     */
    @TableId(value = "course_id", type = IdType.AUTO)
    private Integer courseId;

    /**
     * 父级id（0代表课程，旗下第一层级代表章节，然后代表课节）
     */
    private Integer coursePid;

    /**
     * 类型（0课程，1章节，2课程），方便查阅
     */
    private Integer courseType;

    /**
     * 课程海报图片、课节视频、课节对应试卷关联的资源id外键或联表外键
     */
    private Integer courseResource;

    /**
     * 课程、章节、课节名称或标题
     */
    private String courseName;

    /**
     * 课程简介
     */
    private String classDesc;

    /**
     * 课程状态（1正常，0结束）
     */
    private Integer classStatus;

    /**
     * 课节类型（0课程，1作业）
     */
    private Integer lessonType;

    /**
     * 课节视频时长（秒）（lesson_type为0才可以）
     */
    private Integer lessonVideoTime;

    /**
     * 创建时间（10位时间戳）
     */
    private String createTime;

    /**
     * 修改时间（10位时间戳）
     */
    private String updateTime;

    /**
     * 课程海报、课节资源URL
     */
    @TableField(exist = false)
    private String courseResourceUrl;

    /**
     * 嵌套实体集合
     */
    @TableField(exist = false)
    private List<RuralCourse> children;

    /**
     * 数据库中的temp，用于充当临时变量：user_id
     */
    @TableField(value = "`temp`")
    private Integer temp;

    /**
     * 赋值给temp用的临时变量temp1，也充当user_id
     */
    @TableField(exist = false)
    private Integer temp1;

    @TableField(exist = false)
    private Integer chapterNums;

    /**
     * 是否报名课程（0否，1是）
     */
    @TableField(exist = false)
    private Integer isCollect;

    @TableField(exist = false)
    private Integer lessonNums;

    /**
     * 该课程、章节、课节完成状态（0未完成，1已完成）
     */
    @TableField(exist = false)
    private Integer isPass;

    /**
     * 课程的总完成比率（0~100）
     */
    @TableField(exist = false)
    private Integer completionRate;

    @TableField(exist = false)
    private String sons;


}
